package common

import (
	"fmt"
	"time"
)

type RestrictPath struct {
	ID     string            `json:"ID"`
	Label  string            `json:"label"`
	Rules  []RestrictRule    `json:"rules"`
	Limits map[string]string `json:"limits"`
}
type RestrictRule struct {
	Key         string        `json:"key"`
	Limit       int           `json:"limit"`
	Expired     time.Duration `json:"expired"`
	ExpiredExpr ExpiredExpr   `json:"expiredExpr"`
	Prompt      string        `json:"prompt"` //提示语
}

// GetResolvedKey 将key解析为具体的key
func (s *RestrictRule) GetResolvedKey(id string) string {
	return fmt.Sprintf(s.Key, id)
}

type ExpiredExpr string

const (
	Expr_daily   ExpiredExpr = "daily"   // 每日过期（从0点开始）
	Expr_weekly  ExpiredExpr = "Weekly"  //每周过期 （从周日开始）
	Expr_monthly ExpiredExpr = "monthly" //每月过期（从1号开始）
	//Expr_month_n ExpiredExpr = "month"   //n个月（从当天开始）
	//Expr_day_n   ExpiredExpr = "day"     //n天（从当天开始）
)

// Value 返回状态的整数值
func (s ExpiredExpr) Value() string {
	return string(s)
}
